package com.telit.dispose.dao.dispose;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.telit.dispose.dto.PlatMetaTableEntityDTO;
import com.telit.dispose.dto.TableFindDTO;
import com.telit.dispose.dto.UpdateResourceCategoryDTO;
import com.telit.dispose.dto.UpdateResourceShowDTO;
import com.telit.dispose.entity.dispose.PlatMetaTableEntity;
import com.telit.dispose.vo.dispose.PlatMetaTableVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;


/**
 * 元数据-表 mapper
 * Create by Chencf 2022/08/05
 */
public interface PlatMetaTableMapper extends BaseMapper<PlatMetaTableEntity> {

    /**
     * 创建表
     *
     * @param entity 实体
     *
     * @return Integer
     */
    int createTable(PlatMetaTableEntity entity);

    /**
     * 根据编码查询物理表是否存在
     *
     * @param tableName 编码
     *
     * @return Integer
     */
    int selectTableCountByName(String tableName);


    PlatMetaTableEntity selectByName(@Param("tableName") String tableName);


    List<PlatMetaTableEntity> findTypeList();

    void updateTable(@Param("tableName") String tableName, @Param("fileCode") String fileCode,
                     @Param("fileType") String fileType, @Param("fileTypeLength") Integer fileTypeLength);


    List<PlatMetaTableEntity> selectAllTable(@Param("flag") String flag);

    PlatMetaTableEntityDTO selectTableByTableId(@Param("tableId") String tableId);

    List<PlatMetaTableEntityDTO> selectTableByTableIds(@Param("tableIds") List<String> tableIds);

    IPage<PlatMetaTableVO> selectAllTablePage(IPage<PlatMetaTableVO> platMetaTableEntityIPage,
                                              @Param("tableFindDTO") TableFindDTO tableFindDTO);

    @Select("select name from plat_meta_table where id=#{id}")
    String selectNameByTableId(@Param("id") String id);

    @Update("    update  plat_meta_table   set icon_show=#{iconShow}  where id=#{tableId} ")
    void updateIconShow(@Param("iconShow") String iconShow, @Param("tableId") String tableId);


    void dropTable(@Param("tableName") String tableName);

    void updateResourceShow(@Param("updateResourceShow") UpdateResourceShowDTO updateResourceShow);
    void updateCategory(@Param("updateResourceCategoryDTO") UpdateResourceCategoryDTO updateResourceCategoryDTO);

}
